var security = '';
// 验证邮件的合理性
function verifyAddress(value) {
	var regex = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-])+/;
	if (regex.test(value)) {
		return true;
	} else {
		return false;
	}
}

//去除所有的空格
function trimAll(str,is_global) 
{ 
   var result; 
       result = str.replace(/(^\s+)|(\s+$)/g,""); 
       if(is_global.toLowerCase()=="g")   
       result = result.replace(/\s/g,""); 
       return result; 
} 

/**
 * 验证输入的值是否合法的
 */
function validateLegal(value){
	var value=trimAll(value,"g");
	if(value.indexOf('<')!=-1||value.indexOf('>')!=-1){
		return "人员名称不合法:名称不能带<>等特殊符号且不能为空";
	}else{
		var regex=/^[0-9]+$/;
		var regexBlank=/[\S]/;
		if( regex.test(value)){
			return "人员名称不能全为数字";
		}else if(!regexBlank.test(value)){
			return "人员名称不能全为空格";
		}else{
			return true;
		}
	}
}

//根据公司id请求的ajax
function ajaxCompanyInfo(contributeCompanyId){
	storeContributeCompanyPerson.baseParams.contributeCompanyId = contributeCompanyId;
	storeContributeCompanyPerson.load();
	Ext.Ajax.request({
		url : 'manuscriptCategoryByContributeCompany_get.action',
		method : 'post',
		params : {
			contributeCompanyId : contributeCompanyId
		},
		success : function(resp, opts) {
			var respText = Ext.util.JSON.decode(resp.responseText);
			Ext.getCmp('manuscriptCategoryName').setValue(respText.manuscriptCategoryName);
			Ext.getCmp('manuscriptCategoryName').hiddenField.value = respText.manuscriptCategoryId;
			Ext.getCmp("contributeCompanyType").setValue(respText.contributeCompanyType);
		}
	});
	Ext.getCmp('contributeCompanyPerson').setValue('');
	stateSet("contributeCompanyType",true,false);//更改组件状态
}

//提交的时候请求的ajax
function ajaxWhenSubmit(url,params){
	Ext.Ajax.request({
		url:url,
		method:'post',
		params:params,
		success:function(){
		}
	});
}

/**
 * 设置组件状态
 * id :该组件的id
 * disableBool:禁用状态的布尔值
 * editBool：是否可编辑的状态值
 */
function stateSet(id,disableBool,editBool){
	var Obj=Ext.getCmp(id);
	Obj.setDisabled(disableBool);
	Obj.setEditable(editBool);//如果输入的公司名称不存在,则使单位类型可以编辑
}

function realSecurity() {
	switch (userSecurityGrade) {
		case '1' :
			return security = [['1', '普通']];
			break;
		case '2' :
			return security = [['1', '普通'], ['2', '秘密']];
			break;
		case '3' :
			return security = [['1', '普通'], ['2', '秘密'], ['3', '机密']];
			break;
		case '5' :
			return security = [['1', '普通'], ['2', '秘密'], ['3', '机密'],
					['5', '绝密']];
			break;
	}
}

realSecurity();
var storeSecurity = new Ext.data.SimpleStore({
	
			fields : ['value', 'text'],
			data : security
		});

var type = [['0', '纸质稿件'], ['256', '电子稿件']];

var storeType = new Ext.data.SimpleStore({
			fields : ['value', 'text'],
			data : type
		});

var urgence = [['0', '普通'], ['5', '紧急'], ['10', '特急']];

var storeUrgence = new Ext.data.SimpleStore({
			fields : ['value', 'text'],
			data : urgence
		});

var language = [['1', '汉语'], ['2', '藏语']];

var storeLanguage = new Ext.data.SimpleStore({
			fields : ['value', 'text'],
			data : language
		});

var storeCategory = new Ext.data.JsonStore({
			url : 'manuscriptCategory_list.action',
			root : 'manuscriptCategorys',
			fields : ['manuscriptCategoryId', 'manuscriptCategoryName']
		});

storeCategory.load();
var storeContributeCompany = new Ext.data.JsonStore({
			url : 'contributeCompany_active_list.action',
			root : 'contributeCompanys',
			fields : ['contributeCompanyId', 'contributeCompanyName']
		});
var contributeCompanys=new Array();
storeContributeCompany.load();

var ccontributeCompanyId = 0;
var storeContributeCompanyPerson = new Ext.data.JsonStore({
			url : 'contributeCompanyPerson_active_list.action',
			root : 'contributeCompanyPersons',
			baseParams : {
				contributeCompanyId : ccontributeCompanyId
			},
			fields : ['contributeCompanyPersonId', 'name']
		});

var file = "";
var contributeCompanyName="";
var form_receiver = new Ext.form.FormPanel({
	title : '接收原稿',
	iconCls : 'receiver_add',
	id : 'receiver_from',
	labelAlign : 'right',
	labelWidth : 94,
	frame : true,
	autoScroll : true,
	fileUpload : true,
	region : 'center',
	items : [{
		xtype : 'combo',
		store : storeType,
		hiddenName : 'manuscript.type',
		allowBlank : false,
		editable : false,
		fieldLabel : '文档类型',
		emptyText : '请选择',
		mode : 'local',
		id : 'typeCombo',
		triggerAction : 'all',
		valueField : 'value',
		displayField : 'text',
		itemCls : 'form_text clear',
		listeners : {
			"select" : function() {
				if (Ext.getCmp('typeCombo').getValue() == 0) {
					form_receiver.remove(Ext.getCmp('uploadField'));
				} else {
					form_receiver.remove(Ext.getCmp('uploadField'));
					file = new Ext.form.FileUploadField({
						fieldLabel : '稿件上传',
						name : 'fileuploadfield',
						id : 'uploadField',
						emptyText : '请选择文件(最大允许值50M)',
						allowBlank : false,
						width : '410',
						validator : function(value) {
							var type = ['rar', 'doc', 'xls', 'pdf', 'ppt',
									'txt', 'zip', 'docx'];
							if (value == '') {
								return '请上传稿件';
							} else {
								var fileType = value.substring(value
										.lastIndexOf(".")
										+ 1).toLowerCase();
								for (var i = 0; i < type.length; i++) {
									if (type[i] == fileType) {
										return true;
									}
								}
								return '请上传如下格式的文件:[rar,doc,xls,pdf,ppt,txt,zip,docx]';
							}
						},
						itemCls : 'clear'
					});
					form_receiver.add(file);
					form_receiver.doLayout();
				}
			}
		}
	}, {
		layout : 'fit',
		items : [{
			title : '来稿单位设置',
			autoHeight : true,
			xtype : 'fieldset',
			layout : 'form',
			xtype : 'fieldset',
			items : [{
				xtype : 'combo',
				id : 'contributeCompanyIdCombo',
				store : storeContributeCompany,//从表中读取值
				hiddenName : 'contributeCompanyId',
				allowBlank : false,
				editable : true,
				maxLength:20,
				maxHeight:150,
				enableKeyEvents:true,
				fieldLabel : '来稿单位',
				validator: function(value){
					return validateLegal(value);
				},
				mode : 'local',
				triggerAction : 'all',
				valueField : 'contributeCompanyId',
				itemCls : 'form_text',
				displayField : 'contributeCompanyName',
				listeners : {
					"select" : function(obj) {
						var contributeCompanyId = Ext.getCmp('contributeCompanyIdCombo').getValue();
						ajaxCompanyInfo(contributeCompanyId);
					},"change":function(obj){
						Ext.getCmp('contributeCompanyPerson').setValue('');
						Ext.getCmp('email').setValue('');
						Ext.getCmp('mobile').setValue('');
						Ext.getCmp('telephone').setValue('');
						var value=obj.value;
						if(Ext.type(value)=="string"){
							value=trimAll(value,"g");
							var mc = new Ext.util.MixedCollection();
							//在数据源中查找以此value开头的数据
							mc=obj.getStore().query('contributeCompanyName',value,false,true);
							if(mc.length==0){
								stateSet("contributeCompanyType",false,true);//更改组件状态
								Ext.getCmp("contributeCompanyType").setValue('');
								storeContributeCompanyPerson.removeAll();
							}else{
								mc.each(function(item ,index,length){
									if(this.get("contributeCompanyName")==value){
										obj.hiddenField.value=this.get("contributeCompanyId");
										ajaxCompanyInfo(obj.hiddenField.value);
										return false;//找到则终止遍历
									}
									else if(index==length){
										stateSet("contributeCompanyType",false,true);//更改组件状态
										Ext.getCmp("contributeCompanyType").setValue('');
										storeContributeCompanyPerson.removeAll();
									}
								});
							}
						}else{
							Ext.getCmp('contributeCompanyIdCombo').fireEvent('select');
							Ext.getCmp("contributeCompanyType").setDisabled(true);
						}
					}
				}
			}, {
				xtype : 'combo',
				store : new Ext.data.SimpleStore({
							data : [['0', 'DW'], ['1', 'RD'], ['2', 'ZF'],
									['3', 'ZX'], ['4', 'QT']],
							fields : ['value', 'text']
						}),
				id:"contributeCompanyType",		
				hiddenName : 'oneContributeCompany.type',
				allowBlank : false,
				editable : false,
				disabled:true, 
				emptyText : '请选择',
				mode : 'local',
				triggerAction : 'all',
				valueField : 'value',
				displayField : 'text',
				fieldLabel : '来稿单位类型',
				validator: function(value){
					return validateLegal(value);
	      	    },
	      	    itemCls : 'form_text',
	      	    maxLength:6
			}, {
				xtype : 'combo',
				store : storeContributeCompanyPerson,
				hiddenName : 'contributeCompanyPersonId',
				allowBlank : false,
				editable : true,
				fieldLabel : '联系人',
				emptyText : '请选择',
				mode : 'local',
				id : 'contributeCompanyPerson',
				triggerAction : 'all',
				valueField : 'contributeCompanyPersonId',
				displayField : 'name',
				itemCls : 'form_text',
				validator: function(value){
					if(value.length>6){
						return "该项最大允许输入6个字符";
					}else{
						return validateLegal(value);
					}
	      	    },
				listeners : {
					"select": function(){
						var contributeCompanyPersonId = Ext.getCmp('contributeCompanyPerson').getValue();//获得id号为contributeCompanyPerson的组件值
						Ext.Ajax.request({
							url: 'oneContributeCompanyPerson_get.action',
							method: 'post',
							params: {
								contributeCompanyPersonId: contributeCompanyPersonId
							},
							success: function(resp, opts){
								var respText = Ext.util.JSON.decode(resp.responseText);
								Ext.getCmp('email').setValue(respText.contributeCompanyPerson.email);
								Ext.getCmp('mobile').setValue(respText.contributeCompanyPerson.mobilePhone);
								Ext.getCmp('telephone').setValue(respText.contributeCompanyPerson.telephone);
							}
						});
					},
					"change":function(obj){
						var value=obj.value;
						if(Ext.type(value)=="string"){//说明是手动输入的
							value=trimAll(value,"g");
							var mc = new Ext.util.MixedCollection();
							//在数据源中查找以此value开头的数据
							mc=obj.getStore().query('name',value,false,true);
							if(mc.length!=0){
								mc.each(function(item ,index,length){
									if(this.get("name")==value){
										obj.hiddenField.value=this.get("contributeCompanyPersonId");
										return false;//找到则终止遍历
									}
								});
						}
						}
					}	
	      	    }	
			}, {
				id:'email',
				fieldLabel : '邮箱',
				validator : function(value) {
					return verifyAddress(value);
				},
				invalidText : '输入的邮箱格式不合法,格式如:Json@163.com',
				name : 'contributeCompanyPerson.email',
				allowBlank : false,
				xtype : 'textfield',
				itemCls : 'form_text',
				maxLength : 30,
				maxLengthText : '邮箱最大长度不能超过30'
			}, {
				id:'mobile',
                fieldLabel: '手机',
                xtype: 'textfield',
                regex:/^1[0-9]{10}$/,
                regexText:'输入的手机号码不合法,格式如:159****5678(11位)',
                allowBlank: false,
                name: 'contributeCompanyPerson.mobilePhone',
                itemCls: 'form_text'
            }, {
            	id:'telephone',
				fieldLabel : '电话',
				xtype : 'textfield',
				regex : /^\d{4}-?\d{7}$|^[0-9]{4}-?[0-9]{8}$|^[0-9]{3}-?[0-9]{8}$/,
				regexText : '输入的电话格式不合法,格式如:区号-号码[3-8,4-7,4-8]',
				name : 'contributeCompanyPerson.telephone',
				itemCls : 'form_text'
			}]
		}]
	}, {
		layout : 'fit',
		items : [{
					title : '稿件详细设置',
					autoHeight : true,
					xtype : 'fieldset',
					layout : 'form',
					xtype : 'fieldset',
					items : [{
								xtype : 'textfield',
								name : 'manuscript.title',
								allowBlank : false,
								fieldLabel : '稿件标题',
								width : 700,
								maxLength : 50
							}, {
								xtype : 'combo',
								store : storeCategory,
								hiddenName : 'manuscript.manuscriptCategoryId',
								allowBlank : false,
								editable : false,
								fieldLabel : '稿件分类',
								emptyText : '请选择',
								mode : 'local',
								triggerAction : 'all',
								itemCls : 'form_text',
								valueField : 'manuscriptCategoryId',
								displayField : 'manuscriptCategoryName',
								id : 'manuscriptCategoryName',
								listeners : {
									"focus" : function() {
										if (storeCategory.getTotalCount() == 0) {
											Ext.Msg.show({
														title : '操作提示',
														msg : '请管理员添加稿件分类!',
														buttons : Ext.Msg.OK,
														icon : Ext.Msg.INFO,
														width : 200
													});
										}
									}
								}
							}, {
								xtype : 'combo',
								store : storeLanguage,
								hiddenName : 'manuscript.language',
								id:'language',
								allowBlank : false,
								editable : false,
								fieldLabel : '原稿文种',
								hiddenValue:"1", 
								value : '汉语',
								mode : 'local',
								itemCls : 'form_text',
								triggerAction : 'all',
								valueField : 'value',
								displayField : 'text',
								listeners:{
									"select":function(hiddenValue){
										var lang=hiddenValue.getValue();
										if(lang==1){
											Ext.getCmp("targetLanguage").setValue("藏语");
											Ext.getCmp("targetLanguage").hiddenField.value='2';
										}else{
											Ext.getCmp("targetLanguage").setValue("汉语");
											Ext.getCmp("targetLanguage").hiddenField.value='1';
										}
									}
								}
							}, {
								id:"targetLanguage",
								xtype : 'combo',
								store : storeLanguage,
								hiddenName : 'manuscript.targetLanguage',
								allowBlank : false,
								editable : false,
								fieldLabel : '目标语言',
								hiddenValue:"2", 
								value : '藏语',
								mode : 'local',
								itemCls : 'form_text',
								triggerAction : 'all',
								valueField : 'value',
								displayField : 'text',
								listeners:{
									"select":function(hiddenValue){
										var lang=hiddenValue.getValue();
										if(lang==1){
											Ext.getCmp("language").setValue("藏语");
											Ext.getCmp("language").hiddenField.value='2';
										}else{
											Ext.getCmp("language").setValue("汉语");
											Ext.getCmp("language").hiddenField.value='1';
										}
									}
								}
							}, {
								xtype : 'datefield',
								name : 'plannedConsummationTime',
								editable : false,
								minValue : new Date().format('Y-m-d'),
								allowBlank : false,
								emptyText : '请选择',
								fieldLabel : '计划完成时间',
								itemCls : 'form_text',
								format : 'Y-m-d'
							}, {
								xtype : 'combo',
								store : storeUrgence,
								hiddenName : 'manuscript.urgence',
								allowBlank : false,
								editable : false,
								fieldLabel : '紧急程度',
								emptyText : '请选择',
								mode : 'local',
								triggerAction : 'all',
								itemCls : 'form_text',
								valueField : 'value',
								displayField : 'text'
							}, {
								xtype : 'combo',
								store : storeSecurity,
								hiddenName : 'manuscript.securityClassification',
								allowBlank : false,
								editable : false,
								fieldLabel : '密级',
								emptyText : '请选择',
								mode : 'local',
								triggerAction : 'all',
								itemCls : 'form_text',
								valueField : 'value',
								displayField : 'text'
							}]
				}]
	}, {
		xtype : 'textfield',
		name : 'manuscript.wordNum',
		allowBlank : false,
		fieldLabel : '字数',
		regex : /^[1-9][0-9]{0,8}$/,
		regexText : '请输入长度小于9且最小值为1的合法正整数',
		itemCls : 'form_text'
	}, {
		xtype : 'textarea',
		name : 'manuscript.remark',
		allowBlank : true,
		fieldLabel : '备注',
		maxLength : 200,
		itemCls : 'clear',
		width : '700',
		height : '100'
	}],
	buttons : [{
		text : '提交',
		type : 'submit',
		handler : function() {
			if (form_receiver.form.isValid()) {
				var email=Ext.getCmp('email').getValue();
				var mobile=	Ext.getCmp('mobile').getValue();
				var telephone=	Ext.getCmp('telephone').getValue();
				var comPHidValue=Ext.getCmp('contributeCompanyIdCombo').hiddenField.value;//公司名字隐藏域的值
				var perSHidValue=Ext.getCmp('contributeCompanyPerson').hiddenField.value;//联系人隐藏域的值
				var comTypeSHidValue=Ext.getCmp('contributeCompanyType').hiddenField.value;//联系人隐藏域的值
				comPHidValue=trimAll(comPHidValue,"g");
				perSHidValue=trimAll(perSHidValue,"g");//去除人员名字的所有空格
				comTypeSHidValue=trimAll(comTypeSHidValue,"g");
				var validateNumber=/^[0-9]*$/;//检验是否是字符串的正则
				var params={
						'companyName':comPHidValue,
						'personName':perSHidValue,
						'email':email,
						'mobilePhone':mobile,
						'telephone':telephone
					};
				if(!validateNumber.test(comPHidValue)){//如果不全是数字,说明公司不存在
					Ext.Ajax.request({//请求一个插入公司对象
						url:'contributeCompany_add.action',
						method : 'post',
						params:{
							contributeCompanyName:comPHidValue,
							type:comTypeSHidValue
						},
						success:function(){//添加成功后添加联系人
							ajaxWhenSubmit('contributeCompanyPerson_add.action',params);
						}
					});
				}
				else if(!validateNumber.test(perSHidValue)){
					ajaxWhenSubmit('contributeCompanyPerson_add.action',params);
				}
				Ext.Msg.confirm('提交确认', '你确定要提交稿件?', function(btn) {
					if (btn == 'yes') {
						form_receiver.form.doAction('submit', {
							url : 'manuscript_add.action',
							method : 'post',
							waitTitle : '正在处理',
							waitMsg : '请稍等......',
							success : function(form, action) {
								if (action.result.success) {
									if (action.result.uploadSuccess == undefined) {
										Ext.Msg.show({
													title : '操作提示',
													msg : '文件大于最大允许值50M!',
													buttons : Ext.Msg.OK,
													icon : Ext.Msg.ERROR,
													width : 200
												});
									} else if (action.result.uploadSuccess == "true") {
										Ext.Msg.show({
													title : '操作提示',
													msg : '添加成功!',
													buttons : Ext.Msg.OK,
													icon : Ext.Msg.INFO,
													width : 200,
													fn : function() {
//														form_receiver.form.reset();
														//成功后重新请求这个js，相当于刷新了一遍
														Ext.Ajax.request( {
															url : 'js/receiver/receiver-add.js',
															success : onLoadJs,
															method : 'GET'
														});
													}
												});
									}
								} else {
									Ext.Msg.show({
												title : '错误提示',
												msg : action.result.errorMessage,
												buttons : Ext.Msg.OK,
												icon : Ext.Msg.ERROR,
												width : 200
											});
								}
							},
							failure : function(form, action) {
								if (action.result == null) {
									Ext.Msg.show({
												title : '错误提示',
												msg : '数据不符合要求',
												buttons : Ext.Msg.OK,
												icon : Ext.Msg.ERROR,
												width : 200
											});
								} else {
									if (!action.result.success) {
										Ext.Msg.show({
													title : '错误提示',
													msg : action.result.errorMessage,
													buttons : Ext.Msg.OK,
													icon : Ext.Msg.ERROR,
													width : 200
												});
									}
								}
							}
						});
					}
				});
			}
		}
	}, {
		text : '重置',
		handler : function() {
			form_receiver.form.reset();
		}
	}]
});

var a_receiver = {
	id : 'receiver-add',
	border : false,
	layout : 'border',
	items : [form_receiver]
};
Ext.getCmp('content-panel').add(a_receiver);
Ext.getCmp('content-panel').layout.setActiveItem('receiver-add');
